package com.example.movie.mate.pojo.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 订单VO
 */
@Data
@Schema(description = "订单VO")
public class BookingFullInfoVO implements Serializable {

    /**
     * 订单ID
     */
    @Schema(description = "订单ID")
    private Long id;

    /**
     * 用户ID
     */
    @Schema(description = "用户ID")
    private Long userId;

    /**
     * 对应的放映计划ID
     */
    @Schema(description = "对应的放映计划ID")
    private Long scheduleId;

    /**
     * 电影ID（冗余字段）
     */
    @Schema(description = "电影ID（冗余字段）")
    private Long movieId;

    /**
     * 影厅ID（冗余字段）
     */
    @Schema(description = "影厅ID（冗余字段）")
    private Long hallId;

    /**
     * 电影名称（冗余字段）
     */
    @Schema(description = "电影名称（冗余字段）")
    private String movieName;

    /**
     * 影厅名称（冗余字段）
     */
    @Schema(description = "影厅名称（冗余字段）")
    private String hallName;

    /**
     * 放映开始时间（冗余字段）
     */
    @Schema(description = "放映开始时间（冗余字段）")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime startTime;

    /**
     * 放映结束时间（冗余字段）
     */
    @Schema(description = "放映结束时间（冗余字段）")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime endTime;

    /**
     * 订单总价
     */
    @Schema(description = "订单总价")
    private BigDecimal totalPrice;

    /**
     * 下单时间
     */
    @Schema(description = "下单时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime bookingTime;

    /**
     * 订单状态（0：未支付，1：已支付）
     */
    @Schema(description = "订单状态（0：未支付，1：已支付）")
    private Integer status;

    /**
     * 座位列表
     */
    @Schema(description = "座位列表")
    private List<BookingSeatVO> bookingSeatList;

}